A file storage system may comprise one or more storage devices. The file storage system may maintain one or more volumes comprising files and/or file systems within the one or more storage devices. For example, a first volume comprising a first file system may be maintained within a first storage device, a second volume comprising a second file system may be maintained within a second storage device, etc. The file storage system may provide users with access to files stored within the first file system, the second file system, and/or other file systems.
The file storage system may provide storage functionality, such as snapshot difference functionality and/or snapshot backup, at a volume level, for example. In one example, the file storage system may provide snapshot backup functionality for a volume. The file storage system may create a snapshot comprising a point in time representation of the volume. The snapshot may be used to restore the point in time representation of the volume (e.g., in the event the volume fails). In another example, the file storage system may create a primary volume to secondary volume relationship. In particular, a primary volume may be directly paired with a secondary volume, such that the secondary volume may be configured as a redundant backup storage volume for the primary volume. When data is mirrored from the primary volume to the secondary volume, merely the changes of data are propagated from the primary volume to the secondary volume. The file storage system may provide such functionality as a result of files being stored within the confines of a single volume or a primary volume to secondary volume relationship. For example, the file storage system may mirror data and/or send difference data from the primary volume to the secondary volume because the file storage system may have declared the primary volume and secondary volume relationship beforehand. In this way, the file storage system may be limited to managing the storage of files within the confines of a volume concept.
An object storage system differs from a file storage system in that data is stored as objects, as opposed to files. In particular, the object storage system may represent objects to clients through a single front-end object volume that may grow or shrink in size without affecting how the clients reference such objects (e.g., a single infinite volume). In this way, the object volume is abstracted away from the actual storage of the objects by the object storage system. Instead of storing objects within a single physical volume that corresponds to the object volume, the objects may be stored across a plurality of data constituent volumes. Because the object volume may be derived from multiple data constituent volumes (e.g., a one-to-many mapping), a namespace volume may be used to track locations of objects within the data constituent volumes. For example, the volume namespace may store redirectors that map front-end data paths (e.g., a data path used by a client to reference an object) to back-end data paths (e.g., a data path to a storage location of the object within a data constituent volume). In this way, the namespace volume may be used to locate objects within the plurality of data constituent volumes. When an object is moved between data constituent volumes, a redirector for the object may be updated to reflect the new location of the object without affecting the front-end data path used by the client to reference the object. Accordingly, the object storage system provides a flexible storage solution where data is stored as objects, and such objects may be moved between data constituent volumes without affecting clients (e.g., an object may be moved from an over utilized data constituent volume to an underutilized data constituent volume). Data constituent volumes may be added, removed, and/or modified within the object storage system without affecting operation of the object storage system (e.g., the object volume represented to the client may grow or shrink over time). In this way, the object storage system is not constrained to working without the bounds of a volume concept.
Because of the inherent differences in how a file storage system and an object storage system store data, a file storage system may not be capable of being directly upgraded to an object storage system. Instead, files may be migrated one at a time from the file storage system to the object storage system. In particular, a file may be retrieved from the file storage system, the file may be converted to an object, the object may be stored within a data constituent volume, and an entry may be made within the namespace volume that references the location of the object within the data constituent volume. Migrating data on a file-by-file basis may be inefficient where a large number of files are to be migrated from the file storage system to the object storage system.